package com.cmc.cloud.cmclink.doc.api.document.emums;

import lombok.Getter;

/**
 * check si 基础检验项
 *
 * @author 周贤
 * @date 2025/8/16
 */
public enum BlnoCheckSiErrorPromptEnum {

    /**
     * 货物信息 和 箱 信息 的件 重 尺寸 是否匹配  阻断
     */
    CHECK_PROMPT_ONE("PC_ONE", "货物 件,重,尺寸 存在和箱汇总不一致","阻断"),

    /**
     * 检查提单货描（英文品名）、唛头 中含有非英文字符 阻断
     */
    CHECK_PROMPT_TWO("PC_TWO", "提单货描（英文品名）、唛头中含有非英文字符,或者包含全角字符","阻断"),

    /**
     * Check OOG  如果箱型是 OT、FR 并且箱状态是 F，必须有 OOG 信息。前、后、左、右、上都不能为空。
     */
    CHECK_PROMPT_THREE("PC_THREE", "箱型是 OT、FR 并且箱状态是 F，必须有 OOG 信息。前、后、左、右、上都不能为空","阻断"),

    /**
     * 提示可能涉嫌违反伊朗制裁。
     */
    CHECK_PROMPT_FOUR("PC_FOUR", "箱型前缀非法,可能涉嫌违反伊朗制裁","阻断"),

    /**
     * 检查箱号是否正确。11 位长度箱号有校验规则前四位字母后六位数字最后一位验证码也是数字。这个校验接口调用箱管的接口。
     */
    CHECK_PROMPT_FIVE("PC_FIVE", "存在不符合箱号 规范的箱信息","非阻断"),

    /**
     * 检查提单路径船舶代码不为空，进口航次为空则校验不通过。
     */
    CHECK_PROMPT_SIX("PC_SIX", "提单路径船舶代码不为空，进口航次不允许为空","阻断"),

    /**
     * 检查拼箱提单数据
     * 检查拼箱提单的舱位代码、箱主、运输条款、箱型、箱尺寸、箱状态是否一致
     * 检查拼箱提单的收发通是否一致
     * 检查拼箱提单的 FRT 的付款方式是否一致
     * 检查拼箱提单的船代码、出口航次、进口航次、装货港代码、卸货港代码是否一致。
     */
    CHECK_PROMPT_SEVEN("PC_SEVEN", "拼箱的数据 不一致","阻断"),

    /**
     * 检查是否有 VGM 数据
     */
    CHECK_PROMPT_EIGHT("PC_EIGHT", "Does not exist VGM","非阻断"),

    /**
     * Check VGM【提示】
     * 检查 VGM 重量和箱信息重量的一致性
     * //1．校验LTS舱单CONTAINER栏目下的“VGM数据”与“WEIGHT+TARE总和数据”比较后，是否同时符合以下2种情况：
     * //1.1（WEIGHT+TARE）-VGM<VGM *5% ，且（WEIGHT+TARE）-VGM<1000KGS
     * //1.2. VGM-（WEIGHT+TARE）< VGM *5% ，且VGM-（WEIGHT+TARE）<1000KGS
     * 如果有不符合的情况，在CHECK结果中体现。
     */
    CHECK_PROMPT_NINE("PC_NINE", "VGM 重量和箱信息重量的不一致","非阻断"),

    /**
     * Check VN Customs Rule【阻断】
     * 如果目的港是越南，检查是否符合越南舱单规则：收货人、发货人的名称不能超过 256 个字节。
     */
    CHECK_PROMPT_TEN("PC_TEN", "收货人、发货人的名称不能超过 256 个字节","阻断"),

    /**
     * hscode 不可为空
     */
    CHECK_PROMPT_ELEVEN("PC_ELEVEN", "货物中 hscode 不可为空","阻断"),

    /**
     * 目的港是印度的港口，即 DEL 前两位代码是 IN 的港口。通知人如果不是“SAME AS CONSIGNEE ”，通知人的邮箱必填
     */
    CHECK_PROMPT_TWELVE("PC_TWELVE", "印度港,通知人邮箱必填","阻断"),

    /**
     * Check Operating Entity【阻断】
     * 校验提单是否有提单主体。也就是基础数据里的运营主体集运、海南、海外。
     */
    CHECK_PROMPT_THIRTEEN("PC_THIRTEEN", "提单主体缺失","阻断"),

    /**
     * 台湾地区TW卸港 强制拦截： 港口描述/收发通名称/收发通地址/货描/唛头 不允许包含R.O.C   （Republic Of China）
     */
    CHECK_PROMPT_FOURTEEN("PC_FOURTEEN", "台湾卸港 港口描述/收发通名称/收发通地址/货描/唛头 不允许包含R.O.C","阻断"),

    /**
     * 泰国TH卸港唛头不能包含NOMARK和N/M
     */
    CHECK_PROMPT_FIFTEEN("PC_FIFTEEN", "泰国TH卸港唛头不能包含NOMARK和N/M","阻断"),


    /**
     * 货类和箱型选择冲突判断（货类是 RF 或 RD，箱型必须是 RF 或 RH ；货类必须是AK，箱型为 FR 或 OT 或HC）
     */
    CHECK_PROMPT_SIXTEEN("PC_SIXTEEN", "货类和箱型选择冲突判断（货类是 RF 或 RD，箱型必须是 RF 或 RH ；货类必须是AK，箱型为 FR 或 OT 或HC）","阻断"),

    /**
     * 收发通名称、地址、邮箱、电话、传真中含有非英文字符
     */
    CHECK_PROMPT_SEVENTEEN("PC_SEVENTEEN", "收发通名称、地址、邮箱、电话、传真中含有非英文字符 或者全角字符","阻断"),

    /**
     * 未上传VGM文件
     */
    CHECK_PROMPT_EIGHTEEN("PC_EIGHTEEN", "未上传VGM文件","非阻断"),

    /**
     *
     */
    CHECK_PROMPT_final("", "","");

    @Getter
    private final String promptCode;

    @Getter
    private final String promptDesc;

    /**
     * 阻断类型
     */
    @Getter
    private final String promptType;

    BlnoCheckSiErrorPromptEnum(String promptCode, String promptDesc,String promptType) {
        this.promptCode = promptCode;
        this.promptDesc = promptDesc;
        this.promptType = promptType;
    }
}
